package src.multithreading;

public class LamdaTest2 {

    public static void main(String[] args) {
         class My implements Ilove{
            @Override
            public void love(String You) {
                System.out.println("I love You,"+You);
            }
        }

        Ilove ilove = new My() ;
        ilove.love(" YY wang");


        //匿名
        Ilove ilove1 = new Ilove() {
            @Override
            public void love(String You) {
                System.out.println("I love You,"+You);
            }
        };
        ilove1.love("lihan");

        //lamda简化
        Ilove ilove2 =(String You)->{
            System.out.println("I love You,"+You);
        };
        ilove2.love("Qiujie Z");

        //lamda基础上再简化：去掉参数返回类型
        Ilove ilove3 = null;
        ilove3 =(You)->{
            System.out.println("I love You,"+You);
        };
        ilove2.love("Yaqi S");

        //上述基础上再简化，去掉括号
        Ilove ilove4 = null;
        ilove4 =You -> {System.out.println("I love You,"+You);};
        ilove4.love("Zihan Qin");
        //参数类型已经在函数式接口中确定了
        //多个参数也可以省略参数类型，另外参数类型要去掉就都去掉不要一个参数去掉一个参数不去掉，但不可以省略括号

        //选中要注释的文本：Ctrl+shift+/ 注释或取消注释
        //在上述基础上再简化，去掉大括号
        Ilove ilove5 = null;
        ilove5 =You -> System.out.println("I love YOU "+You);
        ilove5.love("PP Han");
        //这里能去掉花括号的原因是代码只有一行，所以去掉花括号{}的条件也是当代码块中的代码有且只有一行代码


    }
}

interface Ilove{
    void love(String You);
}

